/*  Create by 林才灿
    Date      2023.12.11

    研究 redis 如何实现数据本地存储下来，避免丢失数据；

*/

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <locale.h>

/*
每一页，此处必然是页头
Index of /ipfs/QmYsm3MPNAhhVmnCutKEVt1TPTjNiMqHTXiQ2TgxfuqmZk/佛印（更新至18集）
QmaR3hrDjbxxf6YHcwysuGNQTajhG1StF3xkVyVPh73YgM
中文能否混搭进去？
试一试
*/
int curl_ipfs_dir(const char *gateway,char *ipfs)
{
    #define MAX_LINE_LENGTH (1024 * 8)

    char result[MAX_LINE_LENGTH];
    char cmd[MAX_LINE_LENGTH];
    FILE *exector;
    char *p,*q;

    size_t ipfs_len;
    char ipfs_index[128];

    if(NULL == ipfs)
        return -1;

    // 构造要查找的字符串 
    /*
        Index of
    /ipfs/<a href="/ipfs/QmYsm3MPNAhhVmnCutKEVt1TPTjNiMqHTXiQ2TgxfuqmZk">QmYsm3MPNAhhVmnCutKEVt1TPTjNiMqHTXiQ2TgxfuqmZk</a>
    */
    ipfs_index[0] = '\0';
    strcpy(ipfs_index,"Index of");
    // strcpy(ipfs_index,"Index of\n\t\t\t\t/ipfs/<a href=\"");
    // strcat(ipfs_index,ipfs);
    // strcat(ipfs_index,"\">");
    // strcat(ipfs_index,ipfs + strlen("/ipfs/"));

    printf("\nGET INDEX:\n%s",ipfs_index);
    ipfs_len = strlen(ipfs_index);
      

    cmd[0] = '\0';
    strcpy(cmd,"curl -L --ssl-no-revoke ");
    strcat(cmd,gateway);
    strcat(cmd,ipfs);

    printf("\n%s\n",cmd);

    exector = popen(cmd,"r");
    if(NULL == exector)
      return -1;

    // result[0] = '\0';
    // fgets(result,sizeof(result),exector);
    // if(NULL != strstr(result,ipfs_index))
    // {
    //     printf("found it.\n");
    //     goto out;   
    // }

    // 居然马上就要左旋
    // 写起来好写，关键是这个函数如何测试？
    // 一个比较好的办法是修改长度

    // p = result;
    // q = p + sizeof(result) - ipfs_len - 1;
    // for(int i = 0;i < ipfs_len - 1;i++)
    //     *p++ = *q++;


    //while(NULL != fgets(p,sizeof(result) - ipfs_len - 1,exector) )
    while(NULL != fgets(result,sizeof(result),exector))
    {
        //int ret = wcstombs(result, wc_result, MAX_LINE_LENGTH);
        //printf("ret = %d\n",ret);
        printf("%s",result);
        //strcat(out,result);

        //if(NULL != strstr(result,ipfs_index))
        {
            // printf("\n");
            // p = strstr(result,ipfs_index);

            // printf("\n");

            // for(int j = 0;j < MAX_LINE_LENGTH;j++)
            //     printf("%c",result[j]);  
        
            // printf("\nfound it.\n");
            //goto out;           
        }   

        // p = result;
        // q = p + sizeof(result) - ipfs_len - 1;
        // for(int i = 0;i < ipfs_len - 1;i++)
        //     *p++ = *q++;
    }

    
out:
    pclose(exector);

    return 0;

    // 成功，打印出列出来的文件夹列
}

// 尝试不同解法


void curl_test(void)
{
    char out[128];

    curl_ipfs_dir("http://127.0.0.1:8080","/ipfs/QmYsm3MPNAhhVmnCutKEVt1TPTjNiMqHTXiQ2TgxfuqmZk");
}

// end of file ----------------------------------------------------------------
